package com.lfs.market.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lfs.market.model.dto.OrderDto;
import com.lfs.market.model.entity.Orders;
import com.lfs.market.model.vo.*;

import java.math.BigDecimal;
import java.util.List;

public interface OrdersService extends IService<Orders> {
    /**
     * 根据订单号查询订单信息
     *
     * @param orderNo
     * @return
     */
    Orders selectByOrderNo(String orderNo);

    /**
     * 创建订单
     *
     * @param orders
     */
    String createOrder(OrderDto orders);


    /**
     * 根据订单查询价格
     *
     * @param paymentOrderId
     * @return
     */
    PaymentOrderVo selectOrderNo(String paymentOrderId);

    /**
     * 完成支付
     *
     * @param orderNo
     */
    void finishPay(String orderNo);

    /**
     * 根据用户id查询订单信息
     *
     * @param userId
     * @return
     */
    List<Orders> successPayOrder(String userId);

    /**
     * 根据订单号查询订单信息
     *
     * @param id
     * @return
     */
    AdminOrderDetailVo getOrderDetail(String id);

    /**
     * 定时清除订单
     *
     * @return
     */
    List<Orders> orderTaskDelete();

    /**
     * 根据卖商品的用户id查询订单
     *
     * @param userId
     * @return
     */
    List<Orders> getOrderBySell(String userId);

    /**
     * 查询订单详情
     *
     * @param orderId
     * @return
     */
    Orders selectOrderDetail(String orderId);

    /**
     * 确认发货
     *
     * @param orderId
     * @return
     */
    void confirmShipped(String orderId);

    /**
     * 确认收货
     *
     * @param orderId
     */
    void confirmReceipt(String orderId);


    /**
     * 获取每日订单数据
     */
    List<StatSaleVo> getSaleData();

    /**
     * 查询每日订单
     *
     * @return
     */
    Integer getDailyOrder();

    BigDecimal getSalesToday();

    BigDecimal getSalesMonth();

    Integer getMonthOrder();

    /**
     * 分类饼图
     *
     * @return
     */
    List<StatCategoryVo> getCategoryData();

    /**
     * 各月份交易柱状图
     *
     * @return
     */
    List<StatMonthlyDealVo> getMonthlyDeal();

    /**
     * 本周交易折线图
     *
     * @return
     */
    List<StatWeeklyDealVo> getWeeklyDeal();
}
